// model包定义了核心业务模型
package model

import (
	"context"
)

// LoginRequest 登录请求参数结构体
// 定义了登录API所需的请求参数
type LoginRequest struct {
	Email    string `form:"email" binding:"required,email"` // 用户邮箱, 必填且必须是有效的邮箱格式
	Password string `form:"password" binding:"required"`    // 用户密码, 必填
}

// LoginResponse 登录响应结构体
// 定义了登录成功后的返回数据
type LoginResponse struct {
	AccessToken  string `json:"accessToken"`  // 访问令牌, 用于后续API访问认证
	RefreshToken string `json:"refreshToken"` // 刷新令牌, 用于在访问令牌过期后获取新令牌
}

// LoginService 登录用例接口
// 定义了处理登录逻辑的业务方法
type LoginService interface {
	// GetUserByEmail 通过邮箱获取用户信息
	GetUserByEmail(c context.Context, email string) (User, error)
	// CreateAccessToken 创建访问令牌
	CreateAccessToken(user *User, secret string, expiry int) (accessToken string, err error)
	// CreateRefreshToken 创建刷新令牌
	CreateRefreshToken(user *User, secret string, expiry int) (refreshToken string, err error)
}
